Java进阶-接口

接口也是一种引用类型,可以等同看作 类

  1. 语法:[修饰符] interface 接口名{}
  2. 只能出现:常量、抽象方法
  3. 其实是一个特殊的抽象类,特殊在接口是完全抽象的
  4. 没有构造方法,无法被实例化
  5. 接口和接口之间可以多继承
  6. 一个类可以实现多个接口(这里的”实现“可以等同看作”继承“)
  7. 一个非抽象的类实现接口,需要将接口中所有的方法”实现/重写/覆盖“
  8. 接口和抽象类都能完成某个功能,优先选择接口。因为接口可以多实现,多继承,并且一个类除了实现接口之外,还可以去继承其他类(保留了类的继承)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public interface A1 {
// 常量(必须用 public static final 修饰,这里可以省略)
// public static final double PI = 3.14;
double PI = 3.14;

// 抽象方法(必须用 public abstract 修饰,这里可以省略)
// public abstract void m1();
void m1();
}

interface B1 {
void m1();
}

interface C1 {
void m2();
}

interface D extends B1, C1 {
void m3();
}

/*
* implements 是 实现 的意思,和 extends 意义相同
*/
class MyClass implements B1, C1 {
public void m1() {
}
public void m2() {
}
}

例子

客户业务接口

接口作用:

  1. 可以使项目分层,所有层都面向接口开发,开发效率提高了
  2. 接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得”可插拔“,可以随意切换
1
2
3
4
public interface CustomerService {
// 定义一个退出系统的方法
void logout();
}

接口的实现类

该类的编写完全是面向接口去实现的

1
2
3
4
5
6
public class CustomerServiceImpl implements CustomerService {
// 对接口中的抽象方法进行实现
public void logout() {
System.out.println("成功退出!");
}
}

调用

1
2
3
4
5
6
7
8
public class Test {
public static void main(String[] args) {
// 以下程序面向接口去调用
CustomerService cs = new CustomerServiceImpl();

cs.logout();
}
}